/* 
 * File:   app_functions.h
 * Author: ganrui
 *
 * Created on 20200528-1148
 * 
 */


#ifndef APP_FUNCTIONS_H
#define	APP_FUNCTIONS_H

#ifdef	APP_FUNCTIONS_H
//extern "C" {
#endif

#include <math.h>

#ifndef	DEAL_WITH_CYCLE
#define DEAL_WITH_CYCLE				(10)			//数据检测后处理周期为10
#endif 	

#define TIMER_BAT_LOW_VOLTAGE_MS	3000 	//3s
#define TIMER_TIGER_CUTOFF_MS		3000 	//3s
#define TIMER_VDD_RECOVERY_MS		5000 	//5s
#define TIMER_LOAD_OVER1_DELAY_MS    3000 	//3s
#define TIMER_LOAD_OVER2_DELAY_MS    2000 	//2s
#define TIMER_LOAD_OVER3_DELAY_MS    1000 	//1s
#define TIMER_LOAD_OVER4_DELAY_MS    500 	//0.5s
#define TIMER_LOAD_RECOVERY_MS		10000 	//10s
#define	TIMER_CHECK_BATTERY_LOST_1S 1000	//1s
#define TIMER_CHECK_BATTERY_LOST_MS	300000 	//23s，用于判断备电是否真的丢失
#define TIMER_VCH_DELAY_MS    		3000 	//3s，用于判断是否充电中
#define TIMER_DELAY_2S				2000 	//2s，用于做延时参数
#define TIMER_DELAY_5S				5000	//5s，用于做延时参数
#define TIMER_DELAY_7S				7000 	//7s，用于做延时参数
#define TIMER_DELAY_30S				30000 	//30s，用于做延时参数
#define TIMER_DELAY_100MS			100		//100ms,用于做延时参数

#define TIMER_CHECK_BATTERY_RESISTANCE_MS	(60000u) 	//1min精度1ms
#define TIMER_CHECK_BATTERY_RESISTANCE_MIN	(10) 		//1min, 精度1min//最大定时45天
#define TIMER_CHECK_AC_RECOVERY_MS			(2000)		//2s

	
#define TEMPRATURE_MAX				(50.0)
#define TEMPRATURE_MIN				(-10.0)
#define TEMPRATURE_OPEN				(-20.0)
#define TEMPRATURE_SHORT			(60.0)
//#define TEMPRATURE_NORMAL			(25.0)
#define TEMPRATURE_NORMAL			(8.0)
#define TEMPRATURE_RECOVER			(55.0)
	
#define MAX_POWER_W					(30.0)
#define DACC_CURRENT_MIN			(1.5)
#define DACC_CURRENT_MAX			(2.5)


/**
功能：Tiger电压检测
返回：无
 */
void Check_Tiger_State(   void);

/**
功能：vdd电压检测
返回：无
*/
void Check_VOUT_Voltage(void);

/**
功能：AC交流电压检测
返回：无
*/
void Check_Acpower_Voltage(void);

/**
功能：电池总压检测
返回：无
*/
void Check_Battery_Voltage(void);

/**
功能：负载电流检测
返回：无
*/
void Check_Load_Current(void);

/**
功能：充电电流检测
返回：无
*/
void Check_Charger_Current(void);

/**
功能：充电器电压检测
返回：无
*/
void Check_Charger_Voltage(void);

/**
功能：电池中点电压检测
返回：无
*/
void Check_Bat_Middle_Dot_Voltage(void);

/**
功能：充电任务
返回：无
*/
void Charging_Work(void);

/**
功能：电池开路检测
返回：无
*/
void Check_Battery_Lost(void);

/**
功能：电池充满检测
返回：无
*/
void Check_Battery_Full(void);

/**
功能：电池内阻检测
返回：无
*/
void Check_Battery_Resistance(void);

/**
功能：应急过程中备电丢失或放电终止时主电自恢复
返回：无
*/
void Main_Emergency_Recovery(void);

/**
功能：充电端口（电池端口）短路检测保护
返回：无
*/
void Charger_Port_Short_Protect(void);

/**
功能：AC掉电及时关掉充电器
返回：无
*/
void AC_Down_Charger_Close(void);

/**
功能：系统状态查询，每次通讯处理流程中调用
返回：系统状态
*/
uint32_t Check_Sys_State(void);

/**
功能：响应主机命令和电源信息上传
返回：无
*/
void Response_Post_And_Send_Info(void);

/**
功能：功能执行，负责根据传感器信息执行相关动作
返回：无
*/
void Function_Action(void);

/**
功能：标志位设置函数（针对所有标志位）
返回：1-执行成功,0-执行失败
*/
uint8_t flag_operation(uint8_t* flag, uint8_t action, uint8_t bit);

/**
功能：读 标志位-位状态 函数（针对所有标志位除了时间标志位）
返回：标志位的位状态：1或0
参数：flag-待读的标志位
	  bit-操作标志位的第bit位
*/
uint8_t flag_read(const uint8_t* flag, uint8_t bit);


#ifdef	__cplusplus
//}
#endif

#endif	/* APP_FUNCTIONS_H */

